package com.xy.exam.dao.mapper;

import com.xy.exam.pojo.entity.Exam;
import java.util.List;

import com.xy.exam.pojo.vo.ExamListItemVO;
import com.xy.exam.pojo.vo.ExamStandardVO;

import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

@Repository
public interface ExamMapper {

    /**
     * 插入一条数据
     * @param exam
     * @return 受影响行数
     */
    int insert(Exam exam);
    /**
     * 插入多条数据
     * @param examList
     * @return 受影响行数
     */
    int insertBatch(List<Exam> examList);

    /**
     * 删除一条数据,通过id
     * @param id
     * @return
     */
    int deleteById(Long id);

    /**
     * 删除多条数据
     * @param idList
     * @return
     */
    int deleteByIds(Long[] idList);

    /**
     * 修改一条数据
     * @param exam
     * @return
     */
    int update(Exam exam);

    /**
     * 查询多条数据
     * @return
     */
    List<ExamListItemVO> list();
    /**
     * 根据id查询数据数据详情
     * @param id 数据id
     * @return 匹配的数据数据详情，如果没有匹配的数据，则返回null
     */
    ExamStandardVO getStandardById(Long id);
    /**
     * 统计数据数据的数量
     *
     * @return 数据数据的数量
     */
    int count();
    /**
     * 统计非某id但名称匹配的数据数据的数量，用于检查是否存在其它数据使用了相同的名称
     *
     * @param id   数据id
     * @param title 数据名称
     * @return 匹配名称但不匹配id的数据的数量
     */
    int countByTitleAndNotId(@Param("id") Long id, @Param("title") String title);
    /**
     * 根据数据名称统计数据的数量
     *
     * @param title 数据名称
     * @return 匹配名称的数据数据的数量
     */
    int countByTitle(String title);


}